<template>
  <div class="user">
    <div class="WoDe">
      <!-- 头像 -->
      <!-- <img src="../assets/images/JPEG.webp.png" alt="" /> -->
      <!-- 头像需要根据用户信息改变 -->
      <img :src="TouX" alt="" />
      <!-- 用户名 -->
      <h3 v-if="ZHWangTai">{{ username }}</h3>
      <h3 v-else @click="loginFn">点击登录</h3>
      <!-- 给点击登录绑定点击事件 -->
      <van-icon :name="ZHWangTai ? 'cross' : 'arrow'" @click="loginFn" />
    </div>
    <!-- 模态框 -->
    <!-- 通过判断登录给模态框显示隐藏 -->
    <div class="modal" v-show="Mtk">
      <!-- 遮罩层 -->
      <!-- 给遮罩层点击事件让其点击后隐藏模态框 -->
      <div class="modal_bg" @click="Mtk = false"></div>
      <div class="modal_content">
        <!-- 表单 -->
        <van-form @submit="onSubmit">
          <van-field
            v-model="username"
            name="用户名"
            label="用户名"
            placeholder="用户名"
            :rules="[{ required: true, message: '请填写用户名' }]"
          />
          <van-field
            v-model="password"
            type="password"
            name="密码"
            label="密码"
            placeholder="密码"
            :rules="[{ required: true, message: '请填写密码' }]"
          />
          <div style="margin: 16px">
            <van-button round block type="info" native-type="submit"
              >提交</van-button
            >
          </div>
        </van-form>
      </div>
    </div>
    <van-grid :column-num="3" square>
      <van-grid-item icon="label-o" text="我的订单" />
      <van-grid-item icon="bill-o" text="优惠券" />
      <van-grid-item icon="goods-collect-o" text="礼品卡" />
      <van-grid-item icon="location-o" text="我的收藏" />
      <van-grid-item icon="flag-o" text="我的足迹" />
      <van-grid-item icon="contact" text="会员福利" />
      <van-grid-item icon="aim" text="地址管理" />
      <van-grid-item icon="warn-o" text="账号安全" />
      <van-grid-item icon="service-o" text="联系客服" />
      <van-grid-item icon="question-o" text="帮助中心" />
      <van-grid-item icon="smile-comment-o" text="意见反馈" />
    </van-grid>
  </div>
</template>s

<script>
// 引入我的页对应的方法
import { GoLogin } from "@/utils/http";

// 通过设置一个变量来动态绑定头像
import TouX from "@/assets/images/JPEG.webp.png";

export default {
  name: "WoDe",
  data() {
    return {
      ZHWangTai: false, //定义一个登录状态
      username: "", //用户名
      password: "", //密码
      Mtk: false, //模态框的显示/隐藏
      TouX: TouX, //头像也可以TouX:require("@/assets/images/JPEG.webp.png")
    };
  },
  created() {
    // 因为每次切换到这个页面的时候这个生命周期就会重新调用一次
    // 在这里判断，如果是登录装置就重新赋值
    // 获取本地储存的值  (注意要转化为json对象)
    const userInfo = JSON.parse(localStorage.getItem("userInfo"));
    if (userInfo) {
      // 有这个值就是已经登录，就修改登录状态
      this.ZHWangTai = true;
      // 修改用户名
      this.username = userInfo.username;
      // 修改头像
      this.TouX = userInfo.avatar;
    }
  },
  methods: {
    // 点击提交按钮
    // 这里的values就是用户名和密码的值
    onSubmit(values) {
      // console.log("submit", values);
      // post请求需要传递参数，传递的就是获取的用户名和密码
      GoLogin({ username: values["用户名"], pwd: values["密码"] })
        .then((res) => {
          // console.log(res);
          if (res.data.errno == 0) {
            // 1默认的登录状态为false判断errno的值为0的时候表示登录成功就把登录状态改为true
            this.ZHWangTai = true;
            // 2将后端返回的token存储到本地
            localStorage.setItem("token", res.data.data.token);
            // 3存储用户信息注意要转化为json字符串
            localStorage.setItem(
              "userInfo",
              JSON.stringify(res.data.data.userInfo)
            );
            // 4模态框隐藏
            this.Mtk = false;
            // 将用户信息显示在页面中
            this.username = res.data.data.userInfo.username;
            // 更换用户头像
            this.TouX = res.data.data.userInfo.avatar;
          }
        })
        .catch(() => {});
    },
    // 点击登录
    loginFn() {
      // 判断登录的状态，为未登录的就显示输入用户名密码的模态框
      // 登录就显示退出的模态框
      // 显示模态框
      if (this.ZHWangTai) {
        // 登录状态
        // console.log(this);

        // this的原型对象上有$dialog是引入 Dialog 组件后，会自动在 Vue 的 prototype 上挂载的
        // 直接调用
        // 参数注意是对象的形式
        this.$dialog
          .confirm({
            title: "退出账号确认",
            message: "您是否想要退出当前账号?",
          })
          .then((res) => {
            // 确认表示退出
            // console.log(res);
            // 将登录状态设置为false
            this.ZHWangTai = false;
            // 更换回默认头像
            this.TouX = TouX;
            // 清除本地储存
            localStorage.removeItem("userInfo");
            // 清除token
            localStorage.removeItem("token");
          })
          .catch((res) => {});
      } else {
        // 未登录状态
        // 未登录的时候让用户名和密码为空
        this.username = "";
        this.password = "";
        // 未登录显示模态框
        this.Mtk = true;
      }
    },
  },
};
</script>

<style lang='less' scoped>
.user {
  .WoDe {
    background: #333;
    color: #fff;
    padding: 20px 10px;
    height: 70px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    img {
      border-radius: 50%;
      margin-right: 10px;
      width: 70px;
    }
    h3 {
      flex: 1;
      font-size: 16px;
    }
  }
  .modal {
    width: 100%;
    height: 100%;
    position: fixed;
    z-index: 2;
    left: 0;
    top: 0;
    .modal_bg {
      width: 100%;
      height: 100%;
      background: rgba(0, 0, 0, 0.5);
    }
    .modal_content {
      width: 90%;
      height: 200px;
      position: absolute;
      background: #fff;
      left: 0;
      top: 0;
      right: 0;
      bottom: 0;
      margin: auto;
      padding-top: 40px;
    }
  }
}
</style>